home *** CD-ROM | disk | FTP | other *** search
- #include "element.h"
-
- /*
- * La liste des images presente sur la jaquette
- * on ne peut depasser 10 images pour l'instant
- */
- objetImage listImages[10];
- int nbElem;
-
- extern GdkPixmap *pixmap;
- extern GtkWidget* window;
- extern GtkWidget *zoneDessin;
-
-
- /* Cree une nouvelle image a partir du fichier nomFichier
- * et l'ajoute dans la liste listImages.
- */
- void createImage (char* nomFichier)
- {
- FILE* fichier;
- GtkStyle *style;
- int res=0;
-
- /* On verifie que l'on n'a pas deja plus de 10 images.
- * Attention, on ne verifie pas si l'image a bien pu
- * etre chargee !!!
- */
- if (nbElem < 10)
- {
- /* On recupere le style de la fenetre de base */
- style = gtk_widget_get_style( window );
-
- /* On cree un pixmap a partir de l'image selectionnee */
- listImages[nbElem].pixmap =
- gdk_pixmap_create_from_xpm(window->window,
- &listImages[nbElem].mask,
- NULL,
- nomFichier );
-
- /* petite bidouille pour recuperer la taille de l'image
- */
- fichier = fopen(nomFichier, "r");
- while ((res=fgetc(fichier))!= (int)'\"') {}
- fscanf (fichier, "%d %d", &listImages[nbElem].largeur,
- &listImages[nbElem].hauteur);
- close(fichier);
-
- /* Par defaut, on positionne l'image dans le coin
- * superieur gauche.*/
- listImages[nbElem].posX=0;
- listImages[nbElem].posY=0;
-
- /* On incremente le nombre d'elements */
- nbElem++;
- }
- }
-
-
- /* On affiche l'image obj dans la pixmap servant au
- * double buffer.
- */
- void afficherImage(objetImage* obj, GtkWidget* zone)
- {
- GdkGC *gc;
-
- /* On recupere le graphic contest */
- gc = zone->style->fg_gc[GTK_STATE_NORMAL];
-
- /* On recupere le mask pour l'image
- * Cela permet de gerer la transparence d'une image
- */
- gdk_gc_set_clip_mask (gc, obj->mask);
-
- /* on modifie la position initial du mask */
- gdk_gc_set_clip_origin (gc, obj->posX, obj->posY);
-
- /* On dessine l'image dans la pixmap */
- gdk_draw_pixmap (pixmap,
- zone->style->fg_gc[GTK_STATE_NORMAL],
- obj->pixmap,
- 0, 0,
- obj->posX, obj->posY,
- obj->largeur, obj->hauteur);
-
- /* On efface le mask */
- gdk_gc_set_clip_mask (gc, NULL);
- }
-
-